Cumulative Plot Sales

Column

Plots Sold Across the World

Row

Plot Locations

Plots Sold in the US

World Plots

Column

Cumulative Plot Sales

country sold
United States 2881
United Kingdom 290
France 167
Australia 140
Italy 87
Japan 84
Spain 76
China 75
Germany 72
Switzerland 70
Canada 68
United Arab Emirates 67
Netherlands 65
India 41
Egypt 40
Hong Kong 37
Brazil 32
Russia 32
Uzbekistan 31
Mexico 29
Singapore 29
Israel 26
Cambodia 25
Greece 25
Monaco 25
Vatican City 24
Peru 22
Belgium 18
South Korea 18
Turkey 18
Panama 15
Saudi Arabia 14
Austria 13
New Zealand 13
Thailand 12
Ukraine 12
South Africa 11
Czech Republic 6
Indonesia 6
Ireland 6
Portugal 6
Poland 5
Zimbabwe 5
coordinates 4
Georgia 4
Iraq 4
Jordan 4
Malaysia 4
Philippines 4
Venezuela 4
NA 4
Argentina 3
Bahamas 3
Finland 3
Iceland 3
Jamaica 3
Kazakhstan 3
Saint Lucia 3
Taiwan 3
Armenia 2
Azerbaijan 2
Colombia 2
Croatia 2
Cuba 2
French Polynesia 2
Nepal 2
Ontario 2
Qatar 2
Saint Barthelemy 2
Bolivia 1
Bulgaria 1
Chad 1
Chile 1
Costa Rica 1
Cyprus 1
Dominican Republic 1
Estonia 1
Guatemala 1
Jerusalem District 1
Luxembourg 1
Malta 1
Mongolia 1
Montenegro 1
North Korea 1
Norway 1
Palestinian Territories 1
Romania 1
Senegal 1
Serbia 1
Sri Lanka 1
Vietnam 1

Column

Day

Week

Month

Year

Total

US Plots

Column

Cumulative US Plot Sales

state sold
Texas 691
California 494
New York 491
Florida 253
Nevada 221
District of Columbia 65
Massachusetts 56
Tennessee 55
Louisiana 53
Illinois 42
Georgia 41
Pennsylvania 38
Washington 37
Minnesota 33
Ohio 30
Missouri 28
New Jersey 22
Colorado 21
Indiana 21
Arizona 20
Michigan 17
North Carolina 17
Hawaii 16
Alabama 14
Arkansas 12
Oklahoma 11
Oregon 10
Utah 10
Virginia 10
Wisconsin 10
Wyoming 10
Maryland 9
Kentucky 5
South Dakota 3
Connecticut 2
Maine 2
New Mexico 2
South Carolina 2
Iowa 1
Kansas 1
Mississippi 1
Nebraska 1
New York L2GX5 1
North Dakota 1
Ontario 1

Column

Day

Week

Month

Year

Total

---
title: "SuperWorld Plot Sales"
output: 
  flexdashboard::flex_dashboard:
    social: menu
    source_code: embed
    theme: yeti
---

Cumulative Plot Sales
=====================================

Inputs {.sidebar}
-------------------------------------

```{r setup, include=FALSE, warning=FALSE, message=FALSE}
library(leaflet)
library(leaflet.extras)
library(sf)
library(tidyverse)
library(rnaturalearth)
library(rnaturalearthdata)
library(plotly)
library(usmap)
library(lubridate)

plots_sold = read_csv("C:/Users/rebec/SuperWorld_Plot_Recommendation/data/plots_sold.csv")[-1]
plots_sold$code = toupper(plots_sold$code)

us_plots = plots_sold[which(plots_sold$code == "US"),]
us_address = us_plots$address

state = c()
for (i in 1:length(us_address)){
  add = tail(unlist(str_split(us_address[i], pattern = ", ")), 2)[1]
  add = gsub(' [[:digit:]]+', '', add)
  state = c(state, add)
}

us_plots = cbind(us_plots, state) 

state_data = data.frame(state) %>%
  group_by(state) %>%
  summarise(sold = n())

```

*Total Plot Sales:*

```{r}
nrow(plots_sold)
```


*Top 10 Countries:* ```{r} plots_sold %>% group_by(country) %>% summarise(`plots sold` = n()) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ```
*Top 10 US States:* ```{r} state_data %>% summarise(state, `plots sold` = sold) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ``` Column {data-width=800} ------------------------------------- ### Plots Sold Across the World ```{r warning=FALSE, message=FALSE} world = ne_countries(scale = "medium", returnclass = "sf") df = st_sf(merge(plots_sold, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) df_plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradient(trans = "log") + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) # df2 = df %>% # group_by(country, code) %>% # summarise(sold = n()) %>% # mutate(sold = ifelse(is.na(country), 0, sold)) # plot(df2["sold"], logz = TRUE, main = NULL, key.pos = 4) ggplotly(df_plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` Row ------------------------------------- ### Plot Locations ```{r} leaflet(plots_sold) %>% addTiles() %>% addCircles(lng = ~lon, lat = ~lat) %>% setView(lat = 37.0902, lng = -95.7129, zoom = 4) ``` ### Plots Sold in the US ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_continuous(name = "Plots Sold") ggplotly(us) ``` World Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative Plot Sales ```{r} plots_sold %>% group_by(country) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} plots_today = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) df_today = st_sf(merge(plots_today, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_today %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE)) ``` ### Week ```{r} plots_week = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) df_week = st_sf(merge(plots_week, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_week %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Month ```{r} plots_month = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) df_month = st_sf(merge(plots_month, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_month %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Year ```{r} plots_year = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) df_year = st_sf(merge(plots_year, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_year %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(5, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Total ```{r} plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` US Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative US Plot Sales ```{r} us_plots %>% group_by(state) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} us_today = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) %>% group_by(state) %>% summarise(sold = n()) us_today = plot_usmap(data = us_today, values = "sold", regions = "states") + theme(legend.position = "right") + # scale_fill_continuous(name = "Plots Sold") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_today) ``` ### Week ```{r} us_week = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) %>% group_by(state) %>% summarise(sold = n()) us_week = plot_usmap(data = us_week, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_week) ``` ### Month ```{r} us_month = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) %>% group_by(state) %>% summarise(sold = n()) us_month = plot_usmap(data = us_month, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_month) ``` ### Year ```{r} us_year = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) %>% group_by(state) %>% summarise(sold = n()) us_year = plot_usmap(data = us_year, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_year) ``` ### Total ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us) ```